import axios from 'axios'
// import CryptoJS from 'crypto-js'
import { message } from 'element-ui';
const http = axios.create({
  baseURL: process.env.VUE_APP_BASE_API, // 基础 API URL
  timeout: 1000 * 30, // 设置请求超时
  headers: { 'Content-Type': 'application/json' }
})

/**
 * 请求拦截器
 * 在请求发出前，添加 accessToken 到请求头
 */
http.interceptors.request.use(config => {
  // 如果有 token，添加到请求头
  const accessToken = sessionStorage.getItem('accessToken')
  if (accessToken) {
    config.headers['Authorization'] = `${accessToken}`;
  }
  return config
}, error => {
  return Promise.reject(error)
})
/**
 * 响应拦截器
 * 处理不同的状态码和 token 过期问题
 */
http.interceptors.response.use(async response => {
  // 返回接口响应
  const expireTime = sessionStorage.getItem("expireTime");
  // console.log(expireTime, Date.now());
  if (Date.now() > expireTime) {
    console.log(11);
    // message.error("Token 已过期，请重新登录");
    
  }
  return response.data;
  // // 统一处理业务状态码
  // if (data.code === 200) {
  //   return data.data;
  // } else if (data.code === 400) {
  //   // 如果返回的 code 为 400, 跳转到首页
  //   location.href = "/";
  // } else if (data.code === 401) {
  //   console.log("token 失效，尝试重新获取");

  //   const refreshToken = sessionStorage.getItem("refreshToken");
  //   if (!refreshToken) {
  //     // 如果没有 refreshToken，跳转到首页
  //     location.href = "/";
  //   }

  //   try {
  //     // 刷新 token
  //     const refreshResponse = await http({
  //       method: 'put',
  //       url: '/refreshToken',
  //       headers: {
  //         refreshToken
  //       }
  //     });

  //     // 保存新的 accessToken 和 refreshToken
  //     sessionStorage.setItem("accessToken", refreshResponse.data.accessToken);
  //     sessionStorage.setItem("refreshToken", refreshResponse.data.refreshToken);

  //     // 重新发送之前的请求
  //     return http(response.config);
  //   } catch (error) {
  //     // 刷新 token 失败，跳转到首页
  //     location.href = "/";
  //   }
  // } else {
  //   // 其他错误，显示提示信息
  //   // Message({
  //   //   message: data.message || '未知错误',
  //   //   type: 'error',
  //   //   duration: 1500,
  //   //   customClass: 'element-error-message-zindex'
  //   // });
  //   return Promise.reject(data);
  // }
}, error => {
  console.log(error.response.data.code, "error");

  // 获取存储的token和过期时间
  // const token = sessionStorage.getItem("token");
  const expireTime = sessionStorage.getItem("expireTime");
  console.log(expireTime, Date.now());

  // 判断token是否存在并且是否过期
  if (error.response.data.code === 500) {
    // 如果token过期，清除sessionStorage并跳转到登录页面
    // sessionStorage.removeItem("token");
    // sessionStorage.removeItem("expireTime");
    // sessionStorage.removeItem("userPin");

    // 使用 React Router 进行页面跳转到登录页面
    // const history = useHistory();
    // history.push('/login');  // 假设你的登录页面路径是 /login

    // 如果不使用React路由，你可以使用 window.location 跳转
    // window.location.href = '/'; // 跳转到登录页面

    // 可选：显示提示信息
    message.error("Token 已过期，请重新登录");
  }

  // 如果有其他错误，继续返回错误
  return Promise.reject(error);
});

export default http;

